Result: fail
Detail | Value |
---|---|
Returncode | 1 |
Time | 0:00:00.217281 |
Stdout |
Output v[0].e[0].a element 0: expected 1, got -858993460 Output v[0].e[1].a element 0: expected 11, got -858993460 Output v[1].e[0].a element 0: expected 101, got -858993460 Vertex shader: #version 150 #define DECLARE_VARYING(DIR, TYPE, NAME) DIR Blk { flat TYPE NAME; } blk #define VARYING(NAME) blk.NAME struct S { int a; float b; }; struct T { float c; int d; }; struct U { S[2] e; T[2] f; }; in vec4 pos; DECLARE_VARYING(out, U[2], v); void main() { gl_Position = pos; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { VARYING(v)[i].e[j].a = 100 * i + 10 * j + 1; VARYING(v)[i].e[j].b = float(100 * i + 10 * j + 2); VARYING(v)[i].f[j].c = float(100 * i + 10 * j + 3); VARYING(v)[i].f[j].d = 100 * i + 10 * j + 4; } } } Fragment shader: #version 150 #define DECLARE_VARYING(DIR, TYPE, NAME) DIR Blk { flat TYPE NAME; } blk #define VARYING(NAME) blk.NAME struct S { int a; float b; }; struct T { float c; int d; }; struct U { S[2] e; T[2] f; }; DECLARE_VARYING(in, U[2], v); out vec4 color; void main() { bool pass = true; for (int i = 0; i < 2; i++) { for (int j = 0; j < 2; j++) { if (VARYING(v)[i].e[j].a != 100 * i + 10 * j + 1) pass = false; if (VARYING(v)[i].e[j].b != float(100 * i + 10 * j + 2)) pass = false; if (VARYING(v)[i].f[j].c != float(100 * i + 10 * j + 3)) pass = false; if (VARYING(v)[i].f[j].d != 100 * i + 10 * j + 4) pass = false; } } if (pass) color = vec4(0.0, 1.0, 0.0, 1.0); else color = vec4(1.0, 0.0, 0.0, 1.0); } |
Stderr |
SWR detected AVX2 vert shader 0x7f7d26f34000 frag shader 0x7f7d26f32000 so shader 0x7f7d26f30000 fetch shader 0x7f7d26f2e000 SWR destroy screen! |
Environment |
PIGLIT_SOURCE_DIR="/home/ilia/src/piglit" PIGLIT_PLATFORM="mixed_glx_egl" |
Command | /home/ilia/src/piglit/bin/ext_transform_feedback-structs array-struct-array-struct run-no-fs interface -auto -fbo |
dmesg |